package com.servlet.resp; /**
 * @author wzm
 * @create 2024-01-27 16:13
 * project_name:JavaWeb2401
 * @Description 测试响应对象
 */

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/resp1")
public class ResponseServlet1 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应状态码  一般我们不设置  唯独302会用到
       // response.setStatus(302);//当访问到当前方法时 告诉浏览器 这个资源不提供服务器了  你去找xx吧

        //设置响应头 key-value 告诉浏览器 去访问谁
        /*
        * /斜杆的说明：
        * 斜杆在服务器中和全端浏览器中时不一样的
        * 在服务器中表示的是协议+主机+端口+项目名
        *  /win1=>http://localhost:8080/web03/ win1   包含了项目名
        *  /=>http://localhost:8080/web03/
        *
        * 在前端浏览器中：斜杠表示的是协议+主机+端口       不包含项目名的
        *  /win2 => http:localhost:8080/win2
        *  /=>http:localhost:8080/
        *
        * */
        //response.setHeader("Location","/web03/index.jsp");//重定向资源路径是给浏览器用的所以要加上/

        //以上代码表示  访问resp1时 表示这个资源不存在 你去访问index.jsp吧
        //上面两行代码 刚好组成了 一个重定向
        //重定向有简写
//        response.sendRedirect("/web03/index.jsp");//默认设置了302 仅需要指定路径

        //项目名总是会被修改 直接指定不方便维护
        //可以直接获取项目的虚拟路径 也就是tomcat中项目的名称
        String path = request.getContextPath();
        //response.sendRedirect(path+"/index.jsp");
//        response.sendRedirect(path+"/WEB-INF/a.html");
        //response.sendRedirect("http://www.baidu.com");


        //尝试存储数据
        request.setAttribute("piao","555");
        response.sendRedirect(path+"/win2");

        /*
        * 重定向：也是资源跳转的一种方式
        *1.路径会发生变化，不是一次请求
        * 2.重定向不能访问到WEB-INF下目录
        * 3.可以访问到服务器以外的资源
        * 4.重定向不可以共享request域的数据
        *
        * */

    }
}
